package cn.wolfcode.luowowo.article.service;

import cn.wolfcode.luowowo.article.domain.Attractions;
import cn.wolfcode.luowowo.article.domain.Destination;
import cn.wolfcode.luowowo.article.domain.DestinationTheme;
import cn.wolfcode.luowowo.article.domain.DestinationlThemeDetial;
import cn.wolfcode.luowowo.article.query.DestinationQuery;
import cn.wolfcode.luowowo.article.vo.DestVO;
import com.github.pagehelper.PageInfo;

import java.util.List;

/**
 * @author 猫教授
 * @date 2019/8/9 15:37
 */
public interface IDestinationService {
    /**
     * 通过id删除当个目的地对象
     *
     * @param id
     */
    void deleteByPrimaryKey(Long id);

    /**
     * 保存单个目的地对象
     *
     * @param record
     */

    void insert(Destination record);

    /**
     * 通过id查询单个目的地对象
     *
     * @param id
     * @return
     */

    Destination selectByPrimaryKey(Long id);

    /**
     * 查询全部目的地数据
     *
     * @return
     */

    List<Destination> selectAll();

    /**
     * 更新单个目的地数据
     *
     * @param record
     */

    void updateByPrimaryKey(Destination record);

    /**
     * destination的分页列表查询
     *
     * @param qo 分页条件对象
     * @return
     */
    PageInfo<Destination> listAll(DestinationQuery qo);

    /**
     * 区域关联下拉框查询列表,默认显示小于三
     *
     * @param deep
     * @return
     */
    List<Destination> selectDestByDeep(int deep);

    /**
     * 配合吐丝使用,里面只有id名字和父亲字段
     *
     * @param destinationId
     * @return
     */
    Destination selecOne(Long destinationId);

    /**
     * 通过父母Id查目的地
     *
     * @param ParentIds
     */
    List<Destination> selectHotdestTplByParentId(Long... ParentIds);

    /**
     * 查询国内目的地专用
     *
     * @return
     */
    List<Destination> selectHotdestTplByChinaId();

    /**
     * 查询目的地ID所属国家
     * @param id
     * @return
     */
    Destination getCountry(Long id);

    /**
     * 这里查询目的地所属省份
     * @param id
     * @return
     */
    Destination getProvince(Long id);




//    /**
//     * 用来查询吐丝的;
//     * @param destinationId
//     * @param toasts
//     */
//
//    void getToasts(Long destinationId, ArrayList toasts);

    /**
     * 根据大洲查询对应国家，并按拼音首字母分组
     * @return  大洲下的国家列表
     */
    List<DestVO> selectCountry();

    List<Destination> selectTude(Double longitude, Double latitude);

    /**
     * 根据出行月份筛选目的地
     * @param month
     * @return
     */
    List<Destination> getDestByMonth(Long month);

    List<DestinationlThemeDetial> selectMonth();

    List<DestinationTheme> selectTheme();

    List<DestinationlThemeDetial> getDetailByTheme(Long themeId);

    List<DestinationlThemeDetial> selectFestival();

    DestVO selectThemeAndDetial(String method);

    List<Attractions> selectSpot(Long destId);

    List<DestinationlThemeDetial> selectDay();


}
